﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BL;
using BE;
using System.Drawing;
using System.Data;
using CrystalDecisions.Shared;
using System.Diagnostics;

namespace UI.DireccionAcademica
{
    public partial class FrmInformeOrdenMerito : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            if (!IsPostBack)
            {
                llenarComboSemestre();
                llenarComboCiclos();
                llenarComboEspecialidad();
            }
        }


        private void llenarComboSemestre()
        {
            LabelError.Text = "";
            try
            {
                ReporteNominaComplementaria_BL rnc = new ReporteNominaComplementaria_BL();
                List<Periodo> lista = rnc.ObtenerPeriodos();
                comboSemestre.DataSource = lista;
                comboSemestre.DataTextField = "Semestre";
                comboSemestre.DataValueField = "Semestre";
                comboSemestre.DataBind();
                
            }
            catch (Exception ex)
            {
                LabelError.Text = ex.Message;
            }

        }

        private void llenarComboCiclos()
        {
            LabelError.Text = "";
            try
            {
                ReporteNominaComplementaria_BL rnc = new ReporteNominaComplementaria_BL();
                List<Ciclos> lista = rnc.ObtenerCiclos();
                comboCiclo.DataSource = lista;
                comboCiclo.DataTextField = "Descripcion";
                comboCiclo.DataValueField = "ID";
                comboCiclo.DataBind();
            }
            catch (Exception ex)
            {
                LabelError.Text = ex.Message;
            }

        }

        private void llenarComboEspecialidad()
        {
            LabelError.Text = "";
            try
            {
                ReporteNominaComplementaria_BL rnc = new ReporteNominaComplementaria_BL();
                List<Especialidad> lista = rnc.ObtenerEspecialidades();
                comboEspecialidad.DataSource = lista;
                comboEspecialidad.DataTextField = "DESCRIPCCION";
                comboEspecialidad.DataValueField = "ID";
                comboEspecialidad.DataBind();
                comboEspecialidad.Items.Insert(0, "--Todos--");
            }
            catch (Exception ex)
            {
                LabelError.Text = ex.Message;
            }

        }

        protected void btnGenerar_Click(object sender, EventArgs e)
        {
            try
            {
                LLenarGrillaNota();

            }
            catch (Exception)
            {

                throw;
            }
        }



        


        private void LLenarGrillaNota()
        {

            gridListado.Caption = null;
            LabelError.Text = null;
            try
            {

                String ciclo = comboCiclo.Text;
                String especialidad = comboEspecialidad.Text;
                String semestre = comboSemestre.Text;

                ReporteInformeOrdenMerito_BL datareporte = new ReporteInformeOrdenMerito_BL();
                DataTable resultado=datareporte.obtenerDataReporte(especialidad, ciclo, semestre);
                registros = resultado.Rows.Count;


                Int32 tipo = Convert.ToInt32(radioTercio.SelectedValue);

                Decimal division = Convert.ToDecimal(registros) / Convert.ToDecimal(tipo);
                relevo = Convert.ToInt32(Math.Truncate(division));
                if ((division - relevo) > 0) {
                    relevo += 1;
                }

                gridListado.DataSource = resultado;
                gridListado.DataBind();



            }
            catch (Exception ex)
            {
                LabelError.Text = ex.Message;
            }
        }

        Int32 contador = 0;
        Int32 grupo = 1;
        Int32 registros = 0;
        Int32 relevo = 0;
        String PromedioAnterior = "";
        Int32 Puesto = 0;
        Int32 PuestoFijo = 0;


        protected void gridListado_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {

                e.Row.Cells[2].HorizontalAlign = HorizontalAlign.Right;
                e.Row.Cells[3].HorizontalAlign = HorizontalAlign.Right;
                e.Row.Cells[4].HorizontalAlign = HorizontalAlign.Right;
                e.Row.Cells[5].HorizontalAlign = HorizontalAlign.Right;
                e.Row.Cells[6].HorizontalAlign = HorizontalAlign.Right;
                e.Row.Cells[7].HorizontalAlign = HorizontalAlign.Right;
                e.Row.Cells[8].HorizontalAlign = HorizontalAlign.Right;
                e.Row.Cells[9].HorizontalAlign = HorizontalAlign.Right;

                if (grupo == 1) {
                    e.Row.BackColor = Color.FromName("#c6efce");
                }
                else if (grupo == 2)
                {
                    e.Row.BackColor = Color.FromName("#e7f49f");
                }

                else if (grupo == 3)
                {
                    e.Row.BackColor = Color.FromName("#c2ecec");
                }

                else if (grupo == 4)
                {
                    e.Row.BackColor = Color.FromName("#ecc2e0");
                }

                else if (grupo == 5)
                {
                    e.Row.BackColor = Color.FromName("#a5a1a4");
                }


                contador += 1;
                if (contador == relevo)
                {
                    grupo += 1;
                    contador = 0;
                }


                String promedioactual = e.Row.Cells[8].Text;
                Puesto += 1;


                if (!PromedioAnterior.Equals(promedioactual))
                {
                    PuestoFijo = Puesto;
                }

                PromedioAnterior = promedioactual;
                e.Row.Cells[9].Text = PuestoFijo.ToString();



            }
        }


        private bool GenerarReportePreActa() {
            LabelError.Text = "";
            try
            {
                ReporteActaPreliminal2014 reporte = new ReporteActaPreliminal2014();

                ReportePreActas_BL rnc = new ReportePreActas_BL();


                DataTable data = rnc.ListaPreActa("1405");

                if (data.Rows.Count == 0)
                {
                    LabelError.Text = "No se encontraron registros";
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "script", "alert('" + "No se encontraron registros :" + "" + "');", true);
                    return false;
                }



                reporte.SetDataSource(data);


                ExportOptions CrExportOptions;
                DiskFileDestinationOptions CrDiskFileDestinationOptions = new DiskFileDestinationOptions();
                PdfRtfWordFormatOptions CrFormatTypeOptions = new PdfRtfWordFormatOptions();
                String rutaarchivo = System.IO.Path.GetTempFileName() + Guid.NewGuid() + ".pdf";
                CrDiskFileDestinationOptions.DiskFileName = rutaarchivo;

                Session["RutaReporte"] = rutaarchivo;
                Session["Reporte"] = reporte;


                CrExportOptions = reporte.ExportOptions;
                {
                    CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
                    CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
                    CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions;

                    CrExportOptions.FormatOptions = CrFormatTypeOptions;

                }

                reporte.Export();
                reporte.Close();

                return true;
            }
            catch (Exception ex)
            {
                LabelError.Text = ex.Message;
                return false;
            }
        }

        private bool GenerarReporte() {
            LabelError.Text = "";
            try
            {
                rptPonderado reporte = new rptPonderado();

                ReporteNominaComplementaria_BL rnc = new ReporteNominaComplementaria_BL();

                String ciclo = comboCiclo.Text;
                String especialidad = comboEspecialidad.Text;
                String semestre = comboSemestre.Text;

                ReporteInformeOrdenMerito_BL datareporte = new ReporteInformeOrdenMerito_BL();
                DataTable data = datareporte.obtenerDataReporte(especialidad, ciclo, semestre);

                if (data.Rows.Count == 0)
                {
                    LabelError.Text = "No se encontraron registros";
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "script", "alert('" + "No se encontraron registros :" + "" + "');", true);
                    return false;
                }


                
                reporte.SetDataSource(data);


                reporte.DataDefinition.FormulaFields["Promocion"].Text = "'" + txtPromocion.Text + "'";


                ExportOptions CrExportOptions;
                DiskFileDestinationOptions CrDiskFileDestinationOptions = new DiskFileDestinationOptions();
                PdfRtfWordFormatOptions CrFormatTypeOptions = new PdfRtfWordFormatOptions();
                String rutaarchivo = System.IO.Path.GetTempFileName() + Guid.NewGuid() + ".pdf";
                CrDiskFileDestinationOptions.DiskFileName = rutaarchivo;

                Session["RutaReporte"] = rutaarchivo;
                Session["Reporte"] = reporte;


                CrExportOptions = reporte.ExportOptions;
                {
                    CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
                    CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
                    CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions;

                    CrExportOptions.FormatOptions = CrFormatTypeOptions;

                }

                reporte.Export();
                reporte.Close();

                return true;
            }
            catch (Exception ex)
            {
                LabelError.Text = ex.Message;
                return false;
            }
        }

        protected void btnReporte_Click(object sender, EventArgs e)
        {

            //if (GenerarReportePreActa())
            if (GenerarReporte())
            {
                
               string script = "AbrirVentana('FrmInformeOrdenMeritoPdf.aspx')";
               ScriptManager.RegisterStartupScript(this, typeof(Page), "popup", script, true);
            };  

        }




    }
}